//
// Created by twetec on 25-6-20.
//

#ifndef NETWORK_PROBER_RPC_PROBER_SERVER_H
#define NETWORK_PROBER_RPC_PROBER_SERVER_H

namespace grpc
{
class Server;
}

namespace network_prober::rpc
{
class ProberServer
{
public:
    void start(const std::string& listenIP, size_t listenPort); // 初始化
    static ProberServer &getInstance(); // 获取实例

private:
    ProberServer();  // 构造函数私有化
    ~ProberServer(); // 析构函数私有化

    ProberServer(const ProberServer &) = delete;            // 禁用默认拷贝构造函数（初始化赋值时调用）
    ProberServer &operator=(const ProberServer &) = delete; // 禁用默认拷贝赋值（初始化后，再赋值时调用）

    ProberServer(ProberServer &&) = delete;            // 针对右值
    ProberServer &operator=(ProberServer &&) = delete; // 针对右值

private:
    std::unique_ptr<grpc::Server> m_proberServerPtr{nullptr};
};
}

#endif //NETWORK_PROBER_RPC_PROBER_SERVER_H
